package cn.xopencode.oss.manager.permission;

import cn.xopencode.common.framework.vo.PageResult;
import cn.xopencode.oss.service.permission.PositionService;
import cn.xopencode.oss.convert.permission.PositionConvert;
import cn.xopencode.oss.rpc.permission.dto.PositionPageDTO;
import cn.xopencode.oss.rpc.permission.dto.PositionUpdateDTO;
import cn.xopencode.oss.rpc.permission.dto.PositionCreateDTO;
import cn.xopencode.oss.rpc.permission.vo.PositionVO;
import cn.xopencode.oss.service.permission.bo.PositionBO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
* 职务 Manager
*/
@Service
public class PositionManager {

    @Autowired
    private PositionService positionService;

    /**
    * 创建职务
    *
    * @param createDTO 创建职务 DTO
    * @return 职务
    */
    public String createPosition(PositionCreateDTO createDTO) {
        PositionBO positionBO = positionService.createPosition(PositionConvert.INSTANCE.convert(createDTO));
        return positionBO.getId();
    }

    /**
    * 更新职务
    *
    * @param updateDTO 更新职务 DTO
    */
    public void updatePosition(PositionUpdateDTO updateDTO) {
        positionService.updatePosition(PositionConvert.INSTANCE.convert(updateDTO));
    }

    /**
    * 删除职务
    *
    * @param PositionId 职务编号
    */
    public void deletePosition(String PositionId) {
        positionService.deletePosition(PositionId);
    }

    /**
    * 获得职务
    *
    * @param PositionId 职务编号
    * @return 职务
    */
    public PositionVO getPosition(String PositionId) {
        PositionBO positionBO = positionService.getPosition(PositionId);
        return PositionConvert.INSTANCE.convert(positionBO);
    }

    /**
     * 获得所有职务
     *
     * @return 职务列表
     */
    public List<PositionVO> listAllPositions() {
        List<PositionBO> positionBOS = positionService.listAllPosition();
        return PositionConvert.INSTANCE.convertList02(positionBOS);
    }

    /**
    * 获得职务列表
    *
    * @param PositionIds 职务编号列表
    * @return 职务列表
    */
    public List<PositionVO> listPositions(Collection<String> PositionIds) {
        List<PositionBO> positionBOS = positionService.listPosition(PositionIds);
        return PositionConvert.INSTANCE.convertList02(positionBOS);
    }

    /**
     * 获得职务分页
     *
     * @param pageDTO 职务分页查询
     * @return 职务分页结果
     */
    public PageResult<PositionVO> pagePosition(PositionPageDTO pageDTO) {
        PageResult<PositionBO> pageResultBO = positionService.pagePosition(PositionConvert.INSTANCE.convert(pageDTO));
        return PositionConvert.INSTANCE.convertPage(pageResultBO);
    }

}
